package cn.tedu.oop2;
/**本类用于继承的入门案例*/
public class TestExtends {
    public static void main(String[] args) {
        //5.分别创建3个类的对象
        Fruit f=new Fruit();
        Apple a=new Apple();
        HFS h=new HFS();
        //6.利用对象调用方法测试
        /**3.继承相当于是子类将父类的资源复制了一份
         * 继承还具有传递性，爷爷的功能回传给爸爸，爸爸的功能回传给孙子*/
        f.eat();//爷爷类的对象使用自己的方法
        a.eat();//爸爸类的对象使用从爷爷那里继承过来的方法
        h.eat();//孙子类的对象使用从爸爸那里继承过来的爷爷的方法
        h.sweet();

    }
}
/**1.我们通过extends关键字建立子类与父类的继承关系，格式：子类 extends 父类
 * 2.Java只支持单继承，一个子类只能有一个父类，但是一个父类可以有多个子类*/
//1.创建水果类--爷爷类
class Fruit{
    //4.添加爷爷类的普通方法
    public void eat(){
        System.out.println("现在还没想好吃啥水果呢~");
    }
}
//2.创建苹果类--爸爸类
/**6.继承是一种 is a 的关系，比如苹果是一种水果，红富士是一种苹果
 * 继承要求子类必须是父类的一种下属类型，依赖性非常强，强耦合*/
class Apple extends Fruit{
    //7.定义爸爸类中的属性
    int a=10;//普通属性
    private int b=100;//私有属性
}
//3.创建红富士类--孙子类
class HFS extends Apple{
    //8.//定义孙子类独有的方法
    /**4.子类可以拥有自己独有的方法，实现功能拓展，青出于蓝而胜于蓝*/
    public void sweet(){
        System.out.println(a);//使用从父类继承过来的属性
        System.out.println("红富士特别甜~");
        /**5.子类继承了父类以后，可以使用父类的所有非私有资源
         * 注意：这个私有资源由于被 private修饰，所有没有访问权限*/
//        System.out.println(b);
    }
}
